﻿using OdaOperation.DB;
using Teigha.Core;
using Teigha.TD;

namespace OdaOperation.Extends
{
    public static class ExtendToolDbDataBase
    {
        /// <summary>
        /// 保存包含0层的DWG文件
        /// </summary>
        /// <param name="db">扩展方法所属的 DbDatabase 对象</param>
        /// <param name="saveFile">保存的文件路径</param>
        public static void SaveCover0Layer(this DbDatabase db, string saveFile)
        {
            // 打开块表进行写操作
            OdDbBlockTable odDbBlockTable = db.Database.getBlockTableId().openObject(OpenMode.kForWrite) as OdDbBlockTable;

            // 获取块表的迭代器
            OdDbSymbolTableIterator odDbSymbolTableIterator = odDbBlockTable.newIterator();
            odDbSymbolTableIterator.start();

            // 遍历块表记录
            while (!odDbSymbolTableIterator.done())
            {
                // 打开块表记录
                OdDbBlockTableRecord odDbBlockTableRecord = (OdDbBlockTableRecord)odDbSymbolTableIterator.getRecordId().safeOpenObject();

                // 获取块表记录中的对象迭代器
                OdDbObjectIterator odDbObjectIterator = odDbBlockTableRecord.newIterator();

                // 遍历块表记录中的所有实体
                while (!odDbObjectIterator.done())
                {
                    // 以写模式打开实体
                    OdDbEntity odDbEntity = odDbObjectIterator.entity(OpenMode.kForWrite);

                    // 如果实体在层 "0" 上
                    if (odDbEntity.layer() == "0")
                    {
                        // 设置实体颜色为 ByLayer
                        OdCmColor odCmColor = new OdCmColor();
                        odCmColor.isByLayer();
                        odDbEntity.setColor(odCmColor);
                    }

                    // 移动到下一个实体
                    odDbObjectIterator.step();
                }

                // 移动到下一个块表记录
                odDbSymbolTableIterator.step();
            }

            // 获取当前数据库版本
            DwgVersion fileVersion = db.Database.version();

            // 保存数据库到文件
            db.Database.writeFile(saveFile, SaveType.kDwg, fileVersion);
        }
    }

}